#include<bits/stdc++.h>
using namespace std;
int t,n,m,L,V;
const int N=1e6;
int l[N],r[N];
int as(int d,int v,int a){
    if(v<=V){
        int x=d+((V*V-v*v)/(2*a));
        if(x<=L)return x;
        else return -1;
    }
    return 0;
}//begin-L
int ms(int d,int v,int a){
    if(v>=V){
        int x=d+((V*V-v*v)/(2*a));
        if(x<=L)return x;
        else return L;
    }
    return -1;
}//0-end
int ys(int d,int v,int a){
    if(v<=V)return -1;
    return L;
}//0-L
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int s=0;
    cin>>t;
    while(t--){
        cin>>n>>m>>L>>V;
        while(n--){
            int d,v,a;
            cin>>d>>v>>a;
            if(a>0&&as(d,v,a)!=-1){
                l[s]=as(d,v,a);
                r[s]=L;
                s++;
            }else if(a==0){
                if(ys(d,v,a)==L){
                    l[s]=0;
                    r[s]=L;
                    s++;
                }
            }else if(a<0&&ms(d,v,a)!=-1){
                l[s]=0;
                r[s]=ms(d,v,a);
                s++;
            }
        }

    vector<vector<int>> q;
    int yq[m];
    int w=0,z=0;
    for(int i=0;i<m;i++){
        cin>>yq[i];
        for(int j=1;j<=s;j++){
            if(l[j]<=yq[i]&&yq[i]<=r[j]){
                //q[j].push_back(yq[i]);
                if(z<j){
                    w++;
                    z=j;
                }
            }
        }
    }
    cout<<w<<" ";

}
    return 0;
}
